1. Technical Field
The present invention relates to computer hardware resource management in general, and in particular to a method for managing the usage of hardware resources by application programs within a computer system.
2. Description of Related Art
A multi-tasking operating system (OS), such as Windows®, UNIX®, etc., executes a set of tasks or processes while switching every time slice. Application programs use hardware resources, such as a memory, a bus, a hard drive, a display and so on, to perform certain tasks.
One prior art discloses a technique in which license information, which is information for permitting the usage of resources such as data transfer bandwidth and the like, is given to applications, limitation information indicating a limitation to the amount of use is given to the resources, and when there is a request to use a resource from the applications, it is determined whether or not the usage of the resource is permitted based on the license information and the limitation information. If the usage of resource is permitted, a license to the resource with the defined term of validity is given to the applications and the license information is updated based on the quantity of the license. According to this technique, each of the applications using resources can use a resource license according to the license information and the limitation information if the resource is currently available without performing a process depending on resource limitations or need of resources by other applications.
Another prior art discloses a method for attaining proportional processor resource sharing between a set of processes. A certain number of tickets is allocated to each process, and a process priority is computed based on the allocated number of tickets. An OS fetches and executes an execution-waiting thread out of a dispatch queue. Every time a thread is executed, the number of tickets decreases and the initial number of tickets is again allocated when the number of tickets becomes equal to zero. As a result, multiple threads are executed by a processor at a time, and the number of threads is proportional to the respective allocated number of tickets. This method can provide fair ticket allocation since the amount of processor resources to execute the processes can be controlled by the number of tickets.